package com.xgk.boot.module.core.controller.admin.price.vo;


import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 杂费项字典VO
 */
@Schema(description = "新建/更新杂费项字段 Request VO")
@Data
public class LgExtrasDictSaveVO {

    /**
     * 主键ID（由业务系统指定）
     */
    private Long id;

    /**
     * 规则名称（如："节假日特殊规则"）
     */
    @Schema(description = "杂费项名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "Json Bo")
    @NotBlank(message = "杂费项名称不能为空")
    @Size(max = 100, message = "杂费项名称不能超过100 个字符")
    private String lgExtrasName;

    /**
     * 规则代码，唯一标识（如："HOLIDAY_RULE"）
     */
    @Schema(description = "杂费项代码", requiredMode = Schema.RequiredMode.REQUIRED, example = "Json Bo")
    @NotBlank(message = "杂费项代码不能为空")
    @Size(max = 50, message = "杂费项代码不能超过50个字符")
    @Pattern(regexp = "^[A-Za-z0-9_-]{1,50}$", message = "账号格式为1-50位数字、字母、下划线或连字符")
    private String lgExtrasCode;

    /**
     * 服务商（如："支付宝"、"微信支付"等）
     */
    @Schema(description = "服务商", requiredMode = Schema.RequiredMode.REQUIRED, example = "Json Bo")
    @NotBlank(message = "服务商不能为空")
    @Size(max = 100, message = "服务商不能超过100个字符")
    private String serviceProvider;

    /**
     * 规则描述（详细说明规则内容）
     */
    private String extrasDescription;


    private LocalDateTime createTime;
    /**
     * 最后更新时间
     */
    private LocalDateTime updateTime;
    /**
     * 创建者，目前使用 SysUser 的 id 编号
     *
     * 使用 String 类型的原因是，未来可能会存在非数值的情况，留好拓展性。
     */
    private String creator;
    /**
     * 更新者，目前使用 SysUser 的 id 编号
     *
     * 使用 String 类型的原因是，未来可能会存在非数值的情况，留好拓展性。
     */
    private String updater;

}
